/* 
 * artist definition
 *
 * Choi Jonghwan<saxboy@gmail.com>
 * 2006/04/23
 */
#ifndef __ARTIST_H__
#define __ARTIST_H__

#include "artist_style.h"
#include "song.h"

typedef struct __artist {
	
	char name[128]; 	/* artist name */

	INSTRUMENT instrument;	/* instrument */
	ARTISTSTYLE style;		/* artist style */

	int b_is_drummer; 

	//int (*handler)(struct __artist *a, SONG s, VOICE v); 

} _ARTIST; 
typedef _ARTIST *ARTIST; 

ARTIST artist_New(void); 
ARTIST artist_NewWithName(const char *name); 
int artist_Load(ARTIST a, const char *name); 
int artist_Delete(ARTIST a); 

int artist_SetInstrument(ARTIST a, INSTRUMENT i); 
int artist_SetArtistStyle(ARTIST a, ARTISTSTYLE style); 

int artist_RenderSongToVoice(ARTIST a, SONG s, VOICE v); 

/* some temp artists */
int artist_jazz_pianist(ARTIST a, SONG s, VOICE v); 
int artist_bebop_bassist(ARTIST a, SONG s, VOICE v); 
int artist_latin_bassist(ARTIST a, SONG s, VOICE v); 
int artist_rock_bassist(ARTIST a, SONG s, VOICE v); 
int artist_jazz_saxophonist(ARTIST a, SONG s, VOICE v); 
int artist_bebop_drummer(ARTIST a, SONG s, VOICE v); 
int artist_latin_drummer(ARTIST a, SONG s, VOICE v); 

#endif /* __ARTIST_H__ */
